It has been said that the next generation of computing will be in the form of "network computing." One reason for this prediction is that network computing moves the complexity of applications off of an individual's desktop computer and onto networks and network-based servers which provide more powerful computing and better adapted to running complex programs and applications. Network computing also allows universal and immediate access to applications and information from many users or "clients" from multiple locations, through connections such as linked area networks (LANs), wide area networks (WANs), intranets or from any computer connected to the Internet. Network computing also allows programming advantages such as modular development of software and applications through software components and task-specific modules that can be re-used in different applications and further built upon.
In typical client/server networks, multiple computers known as "clients"are connected to a network and can each access and manipulate data stored at a "server" computer or computers. Clients/server networks, however, typically suffer from a number of drawbacks including the fact that clients must be directly connected to the network in order to access the server. That is to say, most networks are only accessible by a client directly connected to the network within the company or business and are not readily accessible from remote locations outside of the company.
While remote access capability is usually possible, such as dialing in from an outside modem to connect to an internal modem, the remote connection is typically slow and not a satisfactory substitute for accessing the server directly. Another problem with client/server networks is that they are typically provided on a single platform or operating system such that there is difficulty interfacing computers of different platforms or operation systems.
The rapid growth of the Internet and the World Wide Web has dramatically increased awareness and desirability of moving computer networks and information systems onto the Internet, perhaps the ultimate network computing environment. With easy-to-use Web browser software and GUI interfaces, computers connected to the Internet can now instantly gain access to applications and information from virtually anywhere in the world.
Today, to facilitate movement towards a network computing environment, a number of companies are developing and offering multi-tiered, open-platform network computing environments. Such an environment combines features and applications from existing areas of computing including client/server, the Internet and the Web, and distributed object systems in which different components and objects comprising an application can be located on different computers connected to a network. One such network computing environment is a multi-tiered computing environment known as Network Computing Architecture ("NCA") offered by Oracle Corporation. Such computing environments are advantageous since they can manage large amounts of data delivered across a network, such as the Internet, to a large number of clients in a reliable, secure and economical fashion.
Multi-tiered network computing environments, such as Oracle's NCA, provide multiple modules or tiers which accept discrete software programs known as "cartridges" which are specifically written for each module. With NCA, for instance, there is provided three distinct tiers, including a universal data server, an application server, and a universal client. The universal data server provides for file and data management. The application server provides an industry-standard application server, including "listener-independent" application development and deployment environment for the Web. The universal client comprises any client device used to access applications and/or information from within NCA, such as personal computers, Java and/or Web browser-based clients, mobile devices and network computers.
NCA pluggable cartridges are software programs or components that include applications or components of applications. These components can be written in numerous programming languages such as Java, SQL, C/C++, etc. Software developers can interface with NCA by building these pluggable cartridges. NCA provides for the use of three distinct types of cartridges, including client cartridges, application server cartridges and data cartridges. These cartridges are pluggable into the respectively named tiers provided by NCA, such that the universal data server tier accepts data cartridges, the application server tier accepts application server cartridges and the universal client tier accepts client cartridges.
Client cartridges, for example, allow clients to access applications and information within NCA, and can include user-interface applets and audio/video plugins. Thus, client cartridges contains visualization programming to enhance user presentation services at the client tier level. Application server cartridges contain logic for running and managing one or more applications. Data cartridges contain the data manipulation logic, and can be written in a number of different languages such as SQL, C/C++ or Java. Data cartridges also enable users to create special extended data types such as image, text, or time series data types.
The cartridges are all able to communicate with one another across distributed architectures through the use of a common communications bus known as ICX (InterCartridge Exchange), a common communication layer based on published protocols and standard interfaces. These interfaces include the Internet protocol of IIOP (Internet Inter-ORB Protocol), a protocol that enables browsers and servers to exchange complex objects, and HTTP, which supports text transmissions.
With NCA, a programmer can develop a software cartridge that plugs into a one of the three tiers. Presently, cartridges are only developed for each respective tier without thought to a comprehensive collection of cartridges to easily and readily interface consistently and simultaneously with multiple tiers of the network computing environment. This would yield important advantages such as providing a comprehensive computer-based system that provides ready access and control of acquired data from any outside client location, such as via the Internet.